--- 模块功能：NTP功能测试.
-- @author openLuat
-- @module ntp.testNtp
-- @license MIT
-- @copyright openLuat
-- @release 2018.03.28
module(..., package.seeall)

-- 重要提醒！！！！！！
-- ntp功能模块采用多个免费公共的NTP服务器来同步时间
-- 并不能保证任何时间任何地点都能百分百同步到正确的时间
-- 所以，如果用户项目中的业务逻辑严格依赖于时间同步功能
-- 则不要使用使用本功能模块，建议使用自己的应用服务器来同步时间
require "ntp"
require "nvm"

nvm.init("config.lua", true)

--定时授时
local ntpServer, updateRate, st = nvm.get("ntpServer"), tonumber(nvm.get("updateRate")), {}

-- 预警设备参数设置-身份判别
local function containClientsOrNot(clients)
    do
        local containResult = false
        for i = 1, #clients do
            if clients[i] == nvm.get("info")[1] then
                containResult = true
            end
        end
        log.info("containResult", containResult)
        return containResult
    end
end
--手动授时
function setNetworkTimingByManual(tjsondata)
    local sysTime = ""
    sysTime = string.format("%04d-%02d-%02d %02d:%02d:%02d", os.date("*t").year,
        os.date("*t").month, os.date("*t").day, os.date("*t").hour, os.date("*t").min, os.date("*t").sec)
    if tjsondata["clients"] then
        if containClientsOrNot(tjsondata["clients"]) then
            st[1] = ntpServer
            ntp.setServers(st)
            ntp.timeSync()
        end
    end
end
local function setNetworkTiming()
    --local tm = misc.getClock()
    st[1] = ntpServer
    ntp.setServers(st)
    ntp.timeSync(updateRate)
end

setNetworkTiming()
